package com.skh.array;

import java.util.Arrays;

/**
 * 移动0(移动零)
 * created by skh on 2018/8/19
 */
public class MoveZeroes {

	/*
	给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。

	示例:

	输入: [0,1,0,3,12]
	输出: [1,3,12,0,0]
	说明:

	必须在原数组上操作，不能拷贝额外的数组。
	尽量减少操作次数。
	 */

	/*
	使用一个变量k记录位置，我们通过遍历nums数组，将不为0的元素依次复制到nums的前面，并且记录我们复制了多少个元素，对len(nums)-k的元素置0即可。
	 */
	public void moveZeroes(int[] nums) {
		int j=0;
		for (int i=0;i<nums.length;i++) {
			if (nums[i] != 0) {
				nums[j] = nums[i];
				j++;
			}
		}

		//把最后的地方补0
		for (;j<nums.length;j++) {
			nums[j] = 0;
		}
	}

	public static void main(String[] args) {
		MoveZeroes moveZeroes = new MoveZeroes();
		int[] nums = {0, 1, 0, 3, 12};
		moveZeroes.moveZeroes(nums);
		String s = Arrays.toString(nums);
		System.out.println("s = " + s);

	}
}
